package homework.day03;

import homework.day02.User;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 将当前目录下的所有obj文件获取到，并进行反序列化后
 * 输出每个用户的信息(直接输出反序列化后的User对象即可)
 *
 * @author Xiloer
 */
public class Test01 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //创建一个文件对象供下面使用【在这里标注该句代码意义】
        File dir = new File(".");
        //遍历当前目录中的所有以.obj结尾的文件并且存在数组里【在这里标注该句代码意义】
        File[] subs = dir.listFiles((f) -> f.getName().endsWith(".obj"));
            //遍历循环每一个.obj结尾文件【在这里标注该句代码意义】
            for (int i = 0; i < subs.length; i++) {
                //获取从数组中获取每一个obj文件【在这里标注该句代码意义】
                File sub = subs[i];
                //文件输入流【在这里标注该句代码意义】
                FileInputStream fis = new FileInputStream(sub);
                //对象输入流接入到文件输入流【在这里标注该句代码意义】
                ObjectInputStream ois = new ObjectInputStream(fis);
                //将文件读到一个对象中【在这里标注该句代码意义】
                Object obj = ois.readObject();
                //判断是否为所要求的User类对象【在这里标注该句代码意义】
                if (obj instanceof User) {
                    //将对象向下造型转换为用户类对象【在这里标注该句代码意义】
                    User user = (User) obj;
                    //输出user对象内容【在这里标注该句代码意义】
                    System.out.println(user);
                }else {
                    System.err.println("未找到符合条件的.obj文件！！！");
                }
                if (subs.length-1 == i) {
                    ois.close();
                }
            }
    }
}

/*
    提示代码:
	需要用到的语句，尝试按照正确顺序将下列代码并放在main方法中完成需求，
	并在注释中标注每句话的作用，
	//【在这里标注该句代码意义】
    File dir = new File(".");

    //【在这里标注该句代码意义】
    File[] subs = dir.listFiles((f)->f.getName().endsWith(".obj"));

    //【在这里标注该句代码意义】
    for(int i=0;i<subs.length;i++){

    }

    //【在这里标注该句代码意义】
    File sub = subs[i];//从数组中获取每一个obj文件

    //【在这里标注该句代码意义】
    FileInputStream fis = new FileInputStream(sub);

    //【在这里标注该句代码意义】
    ObjectInputStream ois = new ObjectInputStream(fis);

    //【在这里标注该句代码意义】
    Object obj = ois.readObject();

    //【在这里标注该句代码意义】
    User user = (User)obj;

    //【在这里标注该句代码意义】
    System.out.println(user);
    //【在这里标注该句代码意义】
    if(obj instanceof User){

    }
 */